import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import legacy from '@vitejs/plugin-legacy'

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  const { VITE_APP_BASE_URL } = loadEnv(mode, process.cwd())
  return {
    /** 配置插件 */
    plugins: [
      vue(),
      vueJsx(),
      legacy({
        targets: ['defaults', 'not IE 11'] // 需要兼容的目标列表，可以设置多个
      })
    ],
    /** 设置别名 */
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url)),
        '@assets': fileURLToPath(new URL('./src/assets', import.meta.url)),
        '@components': fileURLToPath(new URL('./src/components', import.meta.url))
      }
    },
    /** 配置代理 */
    server: {
      port: 5173, // 项目启动端口号
      host: true, // 允许外部ip访问
      hmr: {
        overlay: false // 是否隐藏hmr连接错误
      },
      proxy: {
        [VITE_APP_BASE_URL]: {
          target: VITE_APP_BASE_URL,
          changeOrigin: true,
          rewrite: path => path.replace(new RegExp('^' + VITE_APP_BASE_URL), '')
        }
      }
    },
    // 预处理器
    css: {
      preprocessorOptions: {
        scss: {
          api: 'modern-compiler',
          additionalData: `@use "@/styles/variable.scss" as *;`, // 全局变量
          javaScriptEnabled: true // 允许在js文件中导入scss文件
        }
      }
    },
    esbuild: {
      drop: mode === 'production' ? ['console', 'debugger'] : []
    }
  }
})
